#! /bin/bash
# to invoke script, first argument is the viewer machine id, second argument is viewer name, and third argument is a pipe-separated string of printer names

# create directories to keep pdf files received as output from cups
mkdir -p /var/log/remotepc-host/remotePrinter
chmod 777 /var/log/remotepc-host/remotePrinter

if [ $# -ne 0 ]
then
    # process to parse printer list received from RemotePC daemon, and generate individual backend files for all printers of a single viewer

    # create variables which are common for all backends

    suffixViewerMachineId=`echo $1 | tr -d ':'`
    suffixViewerName=`echo $2 | tr -d ' '`
    shebangAndDebugEnabler=`head -5 /opt/remotepc-host/.config/rpcHostPrinterBackend`
    fileContent=`tail -n +5 /opt/remotepc-host/.config/rpcHostPrinterBackend`
    variablesToBeAdded_template="VIEWER_MACHINE_ID='$1'\nPRINTER_NAME=";
    suffixBackendNumber=0

    # create new backend for each printer

    printerList=`echo $3 | tr '|' ' '`
    for printerName in `echo $printerList`
    do
        if [ "$printerName" = "RemotePC_Printer" ]
        then
            continue
        fi

        suffixBackendNumber=`expr $suffixBackendNumber + 1`
        backendFileName="rpcHostPrinterBackend${suffixViewerMachineId}${suffixBackendNumber}"

        printerNameBase64=`echo "${printerName}" | base64`
        variablesToBeAdded="${variablesToBeAdded_template}'${printerNameBase64}'";

        # generate new file from above dummy backend file content, and add shebang, debug enabler statement, custom variables etc
        file="${shebangAndDebugEnabler}\n\n${variablesToBeAdded}${fileContent}"

        echo -e "$file" > /usr/lib/cups/backend/$backendFileName
        chmod 755 /usr/lib/cups/backend/$backendFileName
        lpadmin -p "${printerName}_(${suffixViewerName})" -D 'RemotePrinter by RemotePC' -E -v $backendFileName:
    done
else
    cp /opt/remotepc-host/.config/rpcHostPrinterBackend /usr/lib/cups/backend/
    chmod 755 /usr/lib/cups/backend/rpcHostPrinterBackend
    lpadmin -p RemotePC_Printer -D "RemotePrinter by RemotePC" -E -v rpcHostPrinterBackend:
fi

exit $?
